// // js语法允许函数内部再定义函数
// function foo() {
//   function bar() {
//     console.log('bar');
//   }

//   // 不能是return bar(),这样返回的是函数的返回值
//   return bar
// }

// var fn = foo()

// fn()

// function makeAdder(count) {
//   function add(num) {
//     return count + num
//   }

//   return add
// }

// var add5 = makeAdder(5)
// console.log(add5(6));
// console.log(add5(10));

// var add10 = makeAdder(10)
// var add100 = makeAdder(100)

// console.log(add100(1));


// function makeAdder(count) {
//   function add(num) {
//     return count + num
//   }
//   return add
// }

// var add5 = makeAdder(5)
// console.log(add5(6)) // 5 + 6
// console.log(add5(10)) // 10 + 6

// var add10 = makeAdder(10)
// var add100 = makeAdder(100)


// 高阶函数:把一个函数如果接受另外一个函数作为参数,或者该函数会返回另外一个函数作为返回值的函数,这个函数就称为高阶函数